package co.edu.uniquindio.ondas.daos;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.Query;

import co.edu.uniquindio.ondas.entidades.ComentarioAsesor;
/**
 * @version 1.0
 * @author Javier
 * 
 * Session Bean implementation class ComentarioAsesorDAO
 * 
 * @param ComentariosAsesor hace referencia a la entidad que va hacer manejada por el DAO.
 * @param Long especifica cual es el tipo de dato de la llave primaria de la entidad. 
 */
public class ComentarioAsesorDAO extends DAO<ComentarioAsesor, Long>{
	/**
	 * Manejador de la persistencia
	 */
	private EntityManager entityManager;
	public ComentarioAsesorDAO(EntityManager entityManager) {
		super(entityManager);
		this.entityManager=entityManager;
	}

	@Override
	protected Class<ComentarioAsesor> getEntityClass() {
		// TODO Auto-generated method stub
		return ComentarioAsesor.class;
	}
	
	/**
	 * Este metodo hace una consulta en la cual se obtiene una lista de los comentario le a hecho a una investigacion
	 * @param idInvestigacion
	 * @return Lista de Comentario Asesor
	 */
	@SuppressWarnings("unchecked")
	public List<ComentarioAsesor>obtenerComentariosAsesorInvestigacion(long idInvestigacion)
	{
		Query query=entityManager.createQuery("SELECT c FROM ComentarioAsesor c WHERE c.investigacion.identificacion=:parametro");
		query.setParameter("parametro", idInvestigacion);
		return query.getResultList();
	}
	
	/**
	 * Metodo que permite hacer una consulta y obtener una numero de comentarios hechos por el Asesor a una Investigacion
	 * @param idInvestigacion
	 * @return Numero de comnetarios
	 */
	public long obtenerNumeroComentariosAsesorInvestigacion(long idInvestigacion)
	{
		Query query=entityManager.createQuery("SELECT COUNT(c) FROM ComentarioAsesor c WHERE c.investigacion.identificacion=:parametro");
		query.setParameter("parametro", idInvestigacion);
		return (Long) query.getSingleResult();
	}

}
